package cc.cc4414.cc02.chat.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cc.cc4414.cc02.chat.VO.FriendVO;
import cc.cc4414.cc02.chat.VO.GroupVO;
import cc.cc4414.cc02.chat.VO.MessageSendVO;
import cc.cc4414.cc02.system.entity.User;

/**
 * @author cc 2018年10月4日
 */
public interface MessageSendService {

	/**
	 * 查询所有好友及聊天相关信息
	 * 
	 * @param userId
	 *            用户id
	 * @return 查询到的数据
	 */
	List<FriendVO> friendList(Long userId);

	/**
	 * 查询所有所在群组及聊天相关信息
	 * 
	 * @param userId
	 *            用户id
	 * @return 查询到的数据
	 */
	List<GroupVO> groupList(Long userId);

	/**
	 * 发送消息
	 * 
	 * @param user
	 *            发送者
	 * @param receiverId
	 *            接收者id
	 * @param msg
	 *            消息内容
	 * @param receiverType
	 *            消息接收者类型：1为用户，2为群
	 */
	@Transactional
	void send(User user, Long receiverId, String msg, Integer receiverType);

	/**
	 * 倒序查询聊天消息
	 * 
	 * @param userId
	 *            用户id（消息接收者）
	 * @param id
	 *            好友id或群id
	 * @param start
	 *            从第几条开始
	 * @param size
	 *            查询的数量
	 * @param type
	 *            1为用户，2为群
	 * @return 聊天记录
	 */
	@Transactional
	List<MessageSendVO> getMessage(Long userId, Long id, int start, int size, int type);

	/**
	 * 确认已读消息，修改最后一条已读消息id
	 * 
	 * @param userId
	 *            用户id
	 * @param id
	 *            好友id或群id
	 * @param messageSendId
	 *            消息发送id
	 * @param type
	 *            1为用户，2为群
	 */
	void readMessage(Long userId, Long id, Long messageSendId, int type);

}
